package com.sai.transacciones;

import com.sai.clases.Profesor;
import com.sai.conexion.PoolConexion;
import com.sai.sql.SqlProfesor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TProfesor {
    private static ConexionBD Conex;
    private String nombre, ApellidoM,ApellidoP,grupo,materia,matricula,contraseña,tipo,id;
    
     public TProfesor(String n, String AM,String AP, String g,String m,String ma,String c, String t)
    {
        this.nombre = n;
        this.ApellidoM= AM;
        this.ApellidoP= AP;
        this.grupo=g;
        this.materia = m;
        this.matricula = ma;
        this.contraseña= c;
        this.tipo= t;
    }
    
    public TProfesor(){
        nombre ="";
        ApellidoM="";
        materia ="";
        grupo="";
        materia="";  
        matricula="";
        contraseña="";
        tipo="";
        id="";
    }
    
    public static String Consultar() {
        Connection conex = (Connection) PoolConexion.getInstance().getConexion();
        String tablaProfesores;

        try {
            PoolConexion.getInstance().commit(conex);
            PreparedStatement stm = null;
            ResultSet rs = null;

            stm = (PreparedStatement) conex.prepareStatement(SqlProfesor.SELECT_ALL);
            rs = stm.executeQuery();

            tablaProfesores = "<table align='center' border='1' color='red'>"
                + "<tr>"
                + "<th>Nombre</th>"
                + "<th>Apellido Materno</th>"
                + "<th>APellido Paterno</th>"
                + "<th>Grupo Asesorado</th>"
                + "<th>Materia</th>"
                + "<th>Matricula</th>"
                + "</tr>";

            while (rs.next()) {
                tablaProfesores += "<tr>"
                        + "<td>" + rs.getString(2) + "</td>"
                        + "<td>" + rs.getString(3) + "</td>"
                        + "<td>" + rs.getString(4) + "</td>"
                        + "<td>" + rs.getString(5) + "</td>"
                        + "<td>" + rs.getString(6) + "</td>"
                        + "<td>" + rs.getString(7) + "</td>"
                        + "<td>"+"<button type='button' name='btnActualizarr'"
                        + "onclick='buscarProfesor("+rs.getInt(1)+");'>Actualizar</button></td>"
                        + "<td>"+"<button type='button' name='btnEliminar'"
                        + "onclick='borrarProfesor("+rs.getInt(1)+");'>Eliminar</button></td>"
                        + "</tr>";
            }
            tablaProfesores += "</table>";
        } catch (SQLException ex) {
            return "No existe usuario.";
        } finally {
            PoolConexion.getInstance().cerrarConexion(conex);
        }
        return tablaProfesores;
    }
    
    public static String ConsultarProfesor(String id) {
        Connection conex = (Connection) PoolConexion.getInstance().getConexion();
        String campos = null;

        try {
            PoolConexion.getInstance().commit(conex);
            PreparedStatement stm = null;
            ResultSet rs = null;

            stm = (PreparedStatement) conex.prepareStatement(SqlProfesor.SELECT);
            stm.setString(1, id);
            rs = stm.executeQuery();

            if(rs.next()){
                campos = "<h1>Actualizar Datos Profesor</h1><table>"
                        + "<tr><td align='RIGHT'>Nombre</td><td><input type='text' id='txtNombre' size='20' maxlength='35' value='"+rs.getString(2)+"' /></td></tr>"
                        + "<tr><td align='RIGHT'>Apellido Paterno</td><td><input type='text' id='txtAP' size='20' maxlength='20' value='"+rs.getString(4)+"' /><br /></td></tr>"
                        + "<tr><td align='RIGHT'>Apellido Materno</td><td><input type='text' id='txtAM' size='20' maxlength='10' value='"+rs.getString(3)+"' /></td></tr>"
                        + "<tr><td align='RIGHT'>Matricula</td><td><input type='text' id='txtMatricula' size='20' maxlength='20' value='"+rs.getString(7)+"' /></td></tr>"
                        + "<tr><td align='RIGHT'>Materia:</td><td>"
                        + "<select name='cmbMateria' id='cmbMateria'>"
                        + "<option value='"+rs.getString(6)+"'>"+rs.getString(6)+"</option>"
                        + "<option value='Ingenieria'>Ingenieria Del Software</option>"
                        + "<option value='Desarrollo'>Desarrollo de Habilidades III</option>"
                        + "<option value='Expresion'>Expresion Oral y Escrita</option>"
                        + "<option value='Tutoria'>Tutoría</option>"
                        + "<option value='Administracion'>Administracion de Proyectos</option>"
                        + "<option value='Ingles'>Ingles</option>"
                        + "<option value='Integradora'>Integradora</option>"
                        + "<option value='Calidad'>Calidad del Software</option></select></td></tr>"
                        + "<tr><td align='RIGHT'>Grupo:</td><td>"
                        + "<select name='cmbGrupo' id='cmbGrupo'>"
                        + "<option value='"+rs.getString(5)+"'>"+rs.getString(5)+"</option>"
                        + "<option value='5TIC1'>5TIC1</option>"
                        + "<option value='5TIC2'>5TIC2</option>"
                        + "<option value='5TIC3'>5TIC3</option></select></td></tr>"
                        + "<tr><td colspan='2' align='CENTER'><input type='button' value='Guardar Cambios' onClick='Actualizar();'/></td></tr>"
                        + "<tr><td colspan='2'><br /><br /><br /><div id='tablaProf' align='center' border='2' ></div></td></tr></table>";
            }
        } catch (SQLException ex) {
            return "No existe usuario.";
        } finally {
            PoolConexion.getInstance().cerrarConexion(conex);
        }
        return campos;
    }
    
    public static String Registrar(Profesor profesor) {
        Connection conex = (Connection) PoolConexion.getInstance().getConexion();
        String resp = null;

        try{
            PoolConexion.getInstance().beginTransaction(conex);
            
            PreparedStatement stm = null;
            if(profesor.getGrupo().equals("Ninguno")){
                stm = conex.prepareStatement(SqlProfesor.INSERT_PROFESOR);
                stm.setString(1, profesor.getNombre());
                stm.setString(2, profesor.getApellidoM());
                stm.setString(3, profesor.getApellidoP());
                stm.setString(4, profesor.getGrupo());
                stm.setString(5, profesor.getMateria());
                stm.setString(6, profesor.getMatricula());
            } else {
                stm = conex.prepareStatement(SqlProfesor.INSERT_TUTOR);
                stm.setString(1, profesor.getNombre());
                stm.setString(2, profesor.getApellidoM());
                stm.setString(3, profesor.getApellidoP());
                stm.setString(4, profesor.getGrupo());
                stm.setString(5, profesor.getMateria());
                stm.setString(6, profesor.getMatricula());
            }
            stm.executeUpdate();

            PoolConexion.getInstance().commit(conex);
            PoolConexion.getInstance().endTransaction(conex);
            resp = "OK";
        } catch (SQLException ex) {
            return "Error al registrar el Profesor." + ex;
        } finally {
            PoolConexion.getInstance().cerrarConexion(conex);
        }
        return resp;
    }
    //<------------------------------------
    public boolean Buscar(String id){
    ResultSet consulta=null;
    try{
        Conex = ConexionBD.getInstancia("websai","root","");
         if(!Conex.OpenCon())
            return false;
        }catch(ClassNotFoundException ex){
            return false;
        }  try {
           consulta= Conex.getSentencia().executeQuery("select * from profesor where idProfesor= "+id);
            if(consulta.first()){
                this.id=id;
                this.nombre=consulta.getString(2);
                this.ApellidoM=consulta.getString(3);
                this.ApellidoP=String.valueOf(consulta.getInt(4));
                this.grupo=consulta.getString(5);
                this.materia=consulta.getString(6);
                this.matricula=consulta.getString(7);
                this.contraseña=consulta.getString(8);
                this.tipo=consulta.getString(9);
                
            }
        } catch (SQLException ex) {
            return false;
        } 
       return true;
    }
    
   
    @Override
    public String toString() {
        String xml="<?xml version='1.0' ?>";
        xml+="<profesor>"
                    +"<estado>OK</estado>"
                    +"<id>"+id+"</id>"
                    +"<nombre>"+nombre+"</nombre>"
                    +"<apellidoPaterno>"+ApellidoP+"</apellidoPaterno>"
                    +"<apellidoMaterno>"+ApellidoM+"</apellidoMaterno>"
                    +"<grupo>"+grupo+"</grupo>"
                    +"<materia>"+materia+"</materia>"
                    +"<matricula>"+matricula+"</matricula>"
                    +"<contraseña>"+contraseña+"</contraseña>"
                    +"<tipo>"+tipo+"</tipo>"
                    +"</profesor>";
                    return xml;
//        return "Servicio{" + "tipo=" + tipo + ", descripcion=" + descripcion + ", costo=" + costo + ", id=" + id + '}';
    }
    
    public static String Listar() {
        Connection conex = (Connection) PoolConexion.getInstance().getConexion();
        String listaProfesores = "<select>";

        try {
            PoolConexion.getInstance().commit(conex);
            PreparedStatement stm = null;
            ResultSet rs = null;

            stm = (PreparedStatement) conex.prepareStatement(SqlProfesor.SELECT_ALL);
            rs = stm.executeQuery();

            while(rs.next()){
                listaProfesores += "<option value='" + rs.getString(2) + " " + rs.getString(4) + " " + rs.getString(3) + "'>"
                        + rs.getString(2) + " " + rs.getString(4) + " " + rs.getString(3)
                        + "</option>";
            }
            listaProfesores += "</select>";
        } catch (SQLException ex) {
            return "Error " + ex;
        } finally {
            PoolConexion.getInstance().cerrarConexion(conex);
        }
        return listaProfesores;
    }
    
    public boolean Eliminar(String id){
  
    try{
        Conex = ConexionBD.getInstancia("websai","root","");
         if(!Conex.OpenCon())
            return false;
        }catch(ClassNotFoundException ex){
            return false;
        }  try {
           Conex.getSentencia().executeUpdate("delete from profesor where idProfesor="+id);
            
        } catch (SQLException ex) {
            return false;
        } 
       return true;
    }
    
      public  String Modificar(String id){
       String sql;
        try{
        Conex = ConexionBD.getInstancia("websai","root","");
        if(!Conex.OpenCon())
            return "Error: No se pudo abrir la conexión";
        }catch(ClassNotFoundException ex){
            return "Error: "+ex.getMessage();
        }
        sql = "update servicios set Nombre='"+this.nombre+"',ApellidoMaterno='"+ this.ApellidoM+"',ApellidoPaterno='"+
            this.ApellidoP+"',GrupoAsesorado='"+ this.grupo+"',Materia='"+ this.materia+"',Matricula='"+ this.matricula+"',Contrasena='"+ this.contraseña+"',TipoUser='"+ this.tipo+"'"
                + " where idProfesor="+id;
        
        try{
            Conex.getSentencia().executeUpdate(sql);
        }catch(SQLException er){
            return "ERROR: "+er.getMessage();
        }
        return "El servicio se modifico correctamente, "+nombre+", "+ApellidoP+" ,"+ApellidoM;
    }
}
